#include <stdio.h>
#include <string.h>

void str_compress(char *buf, const char *delim, char replace) {
    int i, j = 0;
    int in_delim = 0; // 用于跟踪当前是否在分隔符序列中
    size_t delim_len = strlen(delim);

    for (i = 0; buf[i] != '\0'; i++) {
        // 检查当前字符是否是分隔符
        if (strchr(delim, buf[i])) {
            if (!in_delim) {
                // 如果之前没有进入分隔符序列，则用替代字符替代
                buf[j++] = replace;
                in_delim = 1; // 设置标志，表示进入分隔符序列
            }
        } else {
            // 复制非分隔符字符
            buf[j++] = buf[i];
            in_delim = 0; // 重置标志
        }
    }
    buf[j] = '\0'; // 终止字符串
}

int main() {
    char str[] = "Hello,,,  world! This is a---test.";
    char delim[] = ",- "; // 定义要替换的分隔符
    char replace = '_'; // 定义替代字符

    printf("Original: '%s'\n", str);
    
    str_compress(str, delim, replace);
    
    printf("Compressed: '%s'\n", str);
    
    return 0;
}

